/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package modele;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * Classe représentant un joueur de la partie
 * @author EpsilonE
 */
public class Joueur 
{
    private String nom;
    private int num;
    private Pion pion;
    private ArrayList<Propriete> listProprietes;
    private Case caseCourante;
    private int nbSortieDeDS = 0;
    private int solde;
    private int compteDouble = 0;
    private int valeurDes = 0;
    private HashMap<Groupe,Integer> compteurGroupes;
    private HashMap<Groupe,Boolean> groupesComplets;
    
    /**
     * 
     * @param No Nom de la case
     * @param num Numéro de la case sur le plateau
     * @param img Chemin de l'image du pion choisi 
     * @param bigImg Chemin de l'image (grand format) utilisée dans la zone "joueur courant"
     * @param Ca Case définit au début de la partie
     * @param So Solde définit au départ de la partie
     */
    public Joueur(String No, int num, String img, String bigImg, Case Ca, int So)
    {
        this.nom = No;
        this.num = num;
        this.pion = new Pion(No, img, bigImg);
        this.caseCourante = Ca;
        this.solde = So;
        this.listProprietes = new ArrayList<Propriete>();
        this.compteurGroupes = new HashMap<Groupe,Integer>();
        this.groupesComplets = new HashMap<Groupe,Boolean>();
    }

    /**
     * @return the nom
     */
    public String getNom() 
    {
        return nom;
    }

    /**
     * @return the pion
     */
    public Pion getPion() 
    {
        return pion;
    }

    /**
     * @return the listProprietes
     */
    public ArrayList<Propriete> getListProprietes() 
    {
        return listProprietes;
    }
    
    /**
     * @return the groupesComplets
     */
    public HashMap<Groupe,Boolean> getGroupesComplets() 
    {
        return groupesComplets;
    }
    
    /**
     * @return the compteurGroupes
     */
    public HashMap<Groupe, Integer> getCompteurGroupes() 
    {
        return compteurGroupes;
    }
    
    /**
     * @param Pr the propriete to add
     */
    public void addPropriete(Propriete Pr) 
    {
        listProprietes.add(Pr);
    }
    
    /**
     * @param Pr the propriete to remove
     */
    public void removePropriete(Propriete Pr) 
    {
        listProprietes.remove(Pr);
    }

    /**
     * @return the caseCourante
     */
    public Case getCaseCourante() 
    {
        return caseCourante;
    }

    /**
     * @param caseCourante the caseCourante to set
     */
    public void setCaseCourante(Case caseCourante) 
    {
        this.caseCourante = caseCourante;
    }

    /**
     * @return the nbSortieDeDS
     */
    public int getNbSortieDeDS() 
    {
        return nbSortieDeDS;
    }

    /**
     * @param nbSortieDeDS the nbSortieDeDS to set
     */
    public void setNbSortieDeDS(int nbSortieDeDS) 
    {
        this.nbSortieDeDS = nbSortieDeDS;
    }

    /**
     * @return the solde
     */
    public int getSolde() 
    {
        return solde;
    }

    /**
     * @param solde the solde to set
     */
    public void setSolde(int solde) 
    {
        this.solde = solde;
    }
    
    public int getCompteDouble()
    {
        return compteDouble;
    }
    
    public int augmenterSolde(int value)
    {
        solde += value;
        return solde;
    }
    
    public int diminuerSolde(int value)
    {
        solde -= value;
        return solde;
    }
    
    public int incrementerCompteDouble()
    {
        return ++compteDouble;
    }
    
    public void resetCompteDouble()
    {
        compteDouble = 0;
    }

    /**
     * @return the valeurDes
     */
    public int getValeurDes() {
        return valeurDes;
    }

    /**
     * @param valeurDes the valeurDes to set
     */
    public void setValeurDes(int valeurDes) {
        this.valeurDes = valeurDes;
    }
}
